
/**
 * **获取url中参数，可解码URI和base-64**
 * @param {string} [paramName='all'] - 默认获取url中所有参数，也可指定获取url中某个参数
 * @returns 默认返回所有url参数，指定获取参数后则返回指定参数
 * @example
 *
 * ```js
 * url='http://localhost:8080/?name=tom&age=18';
 * 
 * urlParamGet()
 * // return {name:'tom',age:'18'}
 * 
 * urlParamGet('name')
 * // return 'tom'
 * ```
 */
const urlParamGet=(paramName='all')=>{
   let DATAS=location.search.substr(1);
   
   // 判断是否使用Base64转码
   let base64regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;
   // 解码Base64
   if(base64regex.test(DATAS)){
      DATAS=window.atob(DATAS);
   }
   // 解码btoa
   DATAS=decodeURIComponent(DATAS).split("&");

   // 将所有参数转换为json数组
   let Arr={};
   for(let i=0; i<DATAS.length; i++){
      let arrCell=DATAS[i].split("=")
      Arr[arrCell[0]]=arrCell[1];
   }

   if(paramName=='all'){
      // 默认返回所有参数
      return Arr;
   }else{
      // 获取指定参数
      for(let name in Arr){
          if(name==paramName){
             return Arr[name]
          }
      }
      // 未找到参数
      return false;
   }
}

export default urlParamGet;